1. Field of the Invention
The present invention generally relates to generation of geometric primitives during tessellation of surfaces, and more specifically to the redistribution of the generated geometric primitives for per-vertex processing.
2. Description of the Related Art
In prior graphics systems, primitives were processed in multiple graphics pipelines concurrently in a single pass. In the single pass scheme, internally generated primitives stayed within the same graphics pipeline all the way up to the rasterization step. Tessellation and geometry shaders can generate a highly variable and potentially large number of primitives, which for example might occur when tessellating a surface into many small primitives with a high level-of-detail (LOD). This expansion of work, if processed in a single stage, can cause serialization of the multiple graphics pipelines due to resource limitations and the serialization reduces the processing performance. Even if resource limitations do not cause serialization, the variable amount of work in different graphics pipelines can reduce performance to that of the slowest graphics pipeline.
Accordingly, what is needed in the art is a system and method for balancing the primitive processing workload generated by tessellation and geometry shaders for processing by multiple graphics pipelines.